[버블정렬] 백준 2750번

문제

N개의 수가 주어졌을 때, 이를 오름차순 정렬하는 프로그램을 작성하시오.

  • 1번째 줄에 수의 개수 N (1 <= N <= 1,000)
  • 2번째 줄부터 N개의 줄에 숫자가 주어짐
  • 수는 중복되지 않는다

문제 분석하기

숫자 범위가 1,000으로 매우 작기 때문에, O(N^2) 시간복잡도 알고리즘을 사용해도 문제 없음
버블정렬 알고리즘을 이용하여 문제풀이

슈도코드

N(정렬할 수 개수)
A(정렬할 배열 선언)
for(i : 0~N -1)
{
    for(j : 0 ~ N -1 -i)
    {
        현재 A배열의 값보다 1칸 오른쪽 배열의 값이 더 작으면 두 수 바꾸기
    }
}
A 배열 출력

구현

import java.io.BufferedReader;
import java.io.InputStreamReader;
 
public class App {
    public static void main(String[] args) throws Exception {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int length = Integer.parseInt(br.readLine());
 
        int []arr = new int[length];
        
        for (int i =0; i < length; i++){
            arr[i] = Integer.parseInt(br.readLine());
        }
 
        for (int i =0; i < arr.length; i++){
            for(int j =0; j< arr.length -1 -i; j++){
                if (arr[j] > arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
 
        for (int i : arr) {
            System.out.println(i);
        }
    }
}

관련 문서